package br.siseventos.model;
// Generated 29/10/2012 23:23:36 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * TbEvento generated by hbm2java
 */
@Entity
@Table(name = "tb_evento", catalog = "SisEventosDB")
public class TbEvento extends BaseModel {   
    // <editor-fold desc="Campos">
    
    private Integer idtEvento;
    private TdTipoEvento tdTipoEvento;
    private String nmeEvento;
    private String dscEvento;
    private Date dtaInicioEvento;
    private Date dtaTerminoEvento;
    private char stsEvento;
    private String dscStsEvento;
    private Date dtaInclusaoEvento;
    private String urlImagemEvento;
    private Set<TbAtividade> tbAtividades = new HashSet<TbAtividade>(0);
    private Set<TdItemAvaliacao> itensAvaliacao = new HashSet<TdItemAvaliacao>(0);
    private Set<TbPublico> publicos = new HashSet<TbPublico>(0);
    private Set<TbInscricao> tbInscricaos = new HashSet<TbInscricao>(0);
    
    // </editor-fold>
    // <editor-fold desc="Construtores">
    
    public TbEvento() {
    }

    public TbEvento(TdTipoEvento tdTipoEvento, String nmeEvento, String dscEvento, Date dtaInicioEvento, Date dtaTerminoEvento, char stsEvento, Date dtaInclusaoEvento) {
        this.tdTipoEvento = tdTipoEvento;
        this.nmeEvento = nmeEvento;
        this.dscEvento = dscEvento;
        this.dtaInicioEvento = dtaInicioEvento;
        this.dtaTerminoEvento = dtaTerminoEvento;
        this.stsEvento = stsEvento;
        this.dtaInclusaoEvento = dtaInclusaoEvento;
    }

    public TbEvento(TdTipoEvento tdTipoEvento, String nmeEvento, String dscEvento, Date dtaInicioEvento, Date dtaTerminoEvento, char stsEvento, String dscStsEvento, Date dtaInclusaoEvento, String urlImagemEvento, Set<TbAtividade> tbAtividades, Set<TdItemAvaliacao> itensAvaliacao, Set<TbInscricao> tbInscricaos, Set<TbPublico> publicos) {
        this.tdTipoEvento = tdTipoEvento;
        this.nmeEvento = nmeEvento;
        this.dscEvento = dscEvento;
        this.dtaInicioEvento = dtaInicioEvento;
        this.dtaTerminoEvento = dtaTerminoEvento;
        this.stsEvento = stsEvento;
        this.dscStsEvento = dscStsEvento;
        this.dtaInclusaoEvento = dtaInclusaoEvento;
        this.urlImagemEvento = urlImagemEvento;
        this.tbAtividades = tbAtividades;
        this.itensAvaliacao = itensAvaliacao;
        this.tbInscricaos = tbInscricaos;
        this.publicos = publicos;
    }
    
    // </editor-fold>
    // <editor-fold desc="Getters e Setters">

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idt_evento", unique = true, nullable = false)
    public Integer getIdtEvento() {
        return this.idtEvento;
    }

    public void setIdtEvento(Integer idtEvento) {
        this.idtEvento = idtEvento;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_tipo_evento", nullable = false)
    public TdTipoEvento getTdTipoEvento() {
        return this.tdTipoEvento;
    }

    public void setTdTipoEvento(TdTipoEvento tdTipoEvento) {
        this.tdTipoEvento = tdTipoEvento;
    }

    @Column(name = "nme_evento", nullable = false, length = 80)
    public String getNmeEvento() {
        return this.nmeEvento;
    }

    public void setNmeEvento(String nmeEvento) {
        this.nmeEvento = nmeEvento;
    }

    @Column(name = "dsc_evento", nullable = false, length = 250)
    public String getDscEvento() {
        return this.dscEvento;
    }

    public void setDscEvento(String dscEvento) {
        this.dscEvento = dscEvento;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_inicio_evento", nullable = false, length = 19)
    public Date getDtaInicioEvento() {
        return this.dtaInicioEvento;
    }

    public void setDtaInicioEvento(Date dtaInicioEvento) {
        this.dtaInicioEvento = dtaInicioEvento;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_termino_evento", nullable = false, length = 19)
    public Date getDtaTerminoEvento() {
        return this.dtaTerminoEvento;
    }

    public void setDtaTerminoEvento(Date dtaTerminoEvento) {
        this.dtaTerminoEvento = dtaTerminoEvento;
    }

    @Column(name = "sts_evento", nullable = false, length = 1)
    public char getStsEvento() {
        return this.stsEvento;
    }

    public void setStsEvento(char stsEvento) {
        this.stsEvento = stsEvento;
    }

    @Column(name = "dsc_sts_evento", length = 200)
    public String getDscStsEvento() {
        return this.dscStsEvento;
    }

    public void setDscStsEvento(String dscStsEvento) {
        this.dscStsEvento = dscStsEvento;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_inclusao_evento", nullable = false, length = 19)
    public Date getDtaInclusaoEvento() {
        return this.dtaInclusaoEvento;
    }

    public void setDtaInclusaoEvento(Date dtaInclusaoEvento) {
        this.dtaInclusaoEvento = dtaInclusaoEvento;
    }

    @Column(name = "url_imagem_evento", length = 100)
    public String getUrlImagemEvento() {
        return this.urlImagemEvento;
    }

    public void setUrlImagemEvento(String urlImagemEvento) {
        this.urlImagemEvento = urlImagemEvento;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbEvento")
    public Set<TbAtividade> getTbAtividades() {
        return this.tbAtividades;
    }

    public void setTbAtividades(Set<TbAtividade> tbAtividades) {
        this.tbAtividades = tbAtividades;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbEvento")
    public Set<TbInscricao> getTbInscricaos() {
        return this.tbInscricaos;
    }

    public void setTbInscricaos(Set<TbInscricao> tbInscricaos) {
        this.tbInscricaos = tbInscricaos;
    }

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "ta_item_avaliacao_evento", catalog = "SisEventosDB", joinColumns = { 
			@JoinColumn(name = "cod_evento", nullable = false, updatable = false) }, 
			inverseJoinColumns = { @JoinColumn(name = "cod_item_avaliacao", 
					nullable = false, updatable = false) })
    public Set<TdItemAvaliacao> getItensAvaliacao() {
        return itensAvaliacao;
    }

    public void setItensAvaliacao(Set<TdItemAvaliacao> itensAvaliacao) {
        this.itensAvaliacao = itensAvaliacao;
    }

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "ta_publico_evento", catalog = "SisEventosDB", joinColumns = { 
			@JoinColumn(name = "cod_evento", nullable = false, updatable = false) }, 
			inverseJoinColumns = { @JoinColumn(name = "cod_publico", 
					nullable = false, updatable = false) })
    public Set<TbPublico> getPublicos() {
        return publicos;
    }

    public void setPublicos(Set<TbPublico> publicos) {
        this.publicos = publicos;
    }
    
    
    // </editor-fold>
    // <editor-fold desc="Sobrecargas">
    @Override
    public String toString() {
        return this.nmeEvento;
    }

    @Override
    public boolean equals(Object outro) {
        return (outro instanceof TbEvento) && (this.idtEvento != null)
                ? idtEvento.equals(((TbEvento) outro).getIdtEvento())
                : (outro == this);
    }

    @Override
    public int hashCode() {
        return (idtEvento != null)
                ? (this.getClass().hashCode() + idtEvento.hashCode())
                : super.hashCode();
    }
    // </editor-fold>
}
